<?php


App::uses('AppController', 'Controller');

class AlunosController extends AppController {
	
	public function alterar($id = null){
		
		$this->set('title_for_layout', 'Alunos :: Alterar');
		
		if ($this->request->data){
			
			if ($this->Aluno->save($this->request->data)){
				
				$this->armazenar_endereco($this->request->data);
				
				$this->Session->setFlash('Dados atualizados com sucesso.', 'default', array('class' => 'flashOk'));
				$this->redirect(array('action' => 'index'));
				
			} else {
				
				$this->Session->setFlash('Erro ao tentar atualizar.', 'default', array('class' => 'flashError'));
				
			}
			
		} else {
			
			$this->Aluno->id = $id;
			$this->request->data = $this->Aluno->read();

		}
		
		$this->loadModel('Cidade');
		
		$this->set('cidades', $this->Cidade->get_list_cidades());
		$this->set('cartorios', $this->Aluno->Cartorio->find('list', array('order' => 'nome')));				
		$this->set('etnias', $this->Aluno->Etnia->find('list', array('order' => 'nome')));
		$this->set('estado_civil', $this->Aluno->EstadoCivil->find('list', array('order' => 'nome')));
		$this->set('religioes', $this->Aluno->Religiao->find('list', array('order' => 'nome')));
		
		$this->set('nacionalidade', $this->Aluno->carregar_nacionalidade());
		$this->set('sexo', $this->Aluno->carregar_sexo());
		$this->set('falecido', $this->Aluno->carregar_falecido());
		$this->set('certidao', $this->Aluno->carregar_certidao());
	}
	
	public function armazenar_endereco($request) {
		
		$this->loadModel('Endereco');

		$this->Endereco->create();

		$dados = array();

		$dados['Endereco']['cep'] 			= $request[$this->modelClass]['endereco_cep'];
		$dados['Endereco']['logradouro'] 	= $request[$this->modelClass]['endereco_logradouro']; 
		$dados['Endereco']['bairro'] 		= $request[$this->modelClass]['endereco_bairro']; 
		$dados['Endereco']['cidade_id'] 	= $request[$this->modelClass]['cidade_id']; 
		
		$this->Endereco->armazenar_endereco($dados);

	}
	
	public function excluir($id = null){
		
		try {
			$this->{$this->modelClass}->delete($id);
			$this->Session->setFlash('Registro excluído com sucesso!', 'default', array('class' => 'flashOk'));
		} catch (Exception $e) {
			$this->Session->setFlash('Não foi possível excluir porque existem referências no sistema!', 'default', array('class' => 'flashError'));
			//$this->Session->setFlash($e->getMessage(), 'default', array('class' => 'flashError'));
		}
		
		$this->redirect($this->referer());		

	}
	
	public function excluir_duplicidade_detalhes() {
		
		if ($this->request->data) {
			
			$this->Aluno->AlunoFinanceiro->AlunoFinanceiroDetalhe->Behaviors->disable('AjusteFloat');
			
			$this->Aluno->AlunoEvento->Behaviors->disable('AjusteFloat');
			
			$aluno_id = $this->request->data['Aluno']['id'];
			
			$mensalidades = $this->Aluno->AlunoFinanceiro->find('all', array('conditions' => array('aluno_id' => $aluno_id)));
			
			foreach ($mensalidades as $mensalidade) {
				
				$detalhes = $this->Aluno->AlunoFinanceiro->AlunoFinanceiroDetalhe->find('all', array('conditions' => array('aluno_financeiro_id' => $mensalidade['AlunoFinanceiro']['id'] )));
				
				$eventos = array();
				$ids = array();
				foreach ($detalhes as $detalhe) {
					@$eventos[$detalhe['AlunoFinanceiroDetalhe']['evento_id']]++;
					$ids[$detalhe['AlunoFinanceiroDetalhe']['evento_id']] = $detalhe['AlunoFinanceiroDetalhe']['id'];
				}
				
				foreach ($eventos as $evento_id => $total) {
					if ($total > 1) {
						$this->Aluno->AlunoFinanceiro->AlunoFinanceiroDetalhe->delete($ids[$evento_id]); 
					}
				}
			}
			
			
		}
	}

	public function excluir_referencias() {
		
		if ($this->request->data) {
			
			$aluno_id = $this->request->data['Aluno']['id'];
			
			$this->Aluno->AlunoFinanceiro->AlunoFinanceiroDetalhe->Behaviors->disable('AjusteFloat');
			
			$this->Aluno->AlunoEvento->Behaviors->disable('AjusteFloat');
			
			$this->Aluno->Matricula->deleteAll(array('Matricula.aluno_id' => $aluno_id));
			
			$this->Aluno->AlunoEvento->deleteAll(array('AlunoEvento.aluno_id' => $aluno_id));
			
			$this->Aluno->AlunoFinanceiro->deleteAll(array('AlunoFinanceiro.aluno_id' => $aluno_id));
			
			$this->Aluno->id = $aluno_id;
			$this->Aluno->saveField('situacao', 'A');
		}
	}
	
	public function grid() {

		$this->autoRender = false;

		if ($this->request->data['query'] != '')
			$conditions = array($this->request->data['qtype'] . ' ILIKE' => '%' . str_replace(' ', '%', $this->request->data['query']) . '%');
		else
			$conditions = array();

		$this->paginate = array(
            'page' => $this->request->data['page'],
            'limit' => $this->request->data['rp'],
            'order' => array($this->request->data['sortname'] => $this->request->data['sortorder']),
            'conditions' => $conditions,
			'maxLimit' => 1000,
			'recursive' => -1
		);

		$results = $this->paginate($this->modelClass);

		$data = array();
		$data['page'] = $this->request->data['page'];
		$data['total'] = $this->{$this->modelClass}->find('count', array('conditions' => $conditions));
		$data['rows'] = array();
		
		$situacoes = $this->Aluno->carregar_situacao();

		foreach($results as $rs) {
			$data['rows'][] = array(
		        'id' => $rs[$this->modelClass]['id'],
		        'cell' => array(
					$rs[$this->modelClass]['id'],
					$rs[$this->modelClass]['nome'],
					@$situacoes[$rs[$this->modelClass]['situacao']]
				)
			);
		}

		return json_encode($data);
	}
	
	public function incluir(){
		
		$this->set('title_for_layout', 'Alunos :: Incluir');
		
		if ($this->request->data){
			
			if ($this->Aluno->save($this->request->data)){
				
				$this->armazenar_endereco($this->request->data);
				$this->Session->setFlash('Dados incluídos com sucesso.', 'default', array('class' => 'flashOk'));
				$this->redirect(array('action' => 'index'));
				
			} else {
				$this->Session->setFlash('Erro ao tentar incluir.', 'default', array('class' => 'flashError'));
			}
		}
		
		$this->loadModel('Cidade');
		
		$this->set('cidades', $this->Cidade->get_list_cidades());
		$this->set('cartorios', $this->Aluno->Cartorio->find('list', array('order' => 'nome')));				
		$this->set('etnias', $this->Aluno->Etnia->find('list', array('order' => 'nome')));
		$this->set('estado_civil', $this->Aluno->EstadoCivil->find('list', array('order' => 'nome')));
		$this->set('religioes', $this->Aluno->Religiao->find('list', array('order' => 'nome')));
		
		$this->set('nacionalidade', $this->Aluno->carregar_nacionalidade());
		$this->set('sexo', $this->Aluno->carregar_sexo());
		$this->set('falecido', $this->Aluno->carregar_falecido());
		$this->set('certidao', $this->Aluno->carregar_certidao());
		
	}
	
	public function index() {
		
		$this->set('title_for_layout', 'Alunos');
		
	}

	public function pesquisar() {
		
		$this->autoRender = false;
		
		$conditions = array();
		
		if ($_REQUEST['nome'] != '???') {
			$conditions['nome ILIKE'] = '%' . $_REQUEST['nome'] . '%';
		}

		$registros = $this->Aluno->find('all', 
			array(
				'conditions' => $conditions, 
				'order' => 'nome',
				'fields' => array('id', 'nome')
			)
		);

		$data = array();
		
		foreach($registros as $registro) {

			$data[] = array('id' => $registro['Aluno']['id'], 'value' => $registro['Aluno']['nome']);
		}

		return $_GET['callback'] . '('.json_encode($data).')';
	}	

}